Ch02 Stateful Tracking 典型與意料之外的儲存位置/Day7 Local Storage,IndexedDB,Cache
Local Storage
cookie儲存空間太小(4KB)成為致命傷>取代者為Storage
IndexedDB
1.同樣是key-value pair,比Storage有更大的儲存空間、支援非同步操作、可以儲存二進位資料而非純字串
2.支援Transaction
Cache快取
為了減少重複請求的流量並加速操作,會把這些檔案儲存下來,下次遇到可以直接使用之前存好的東西
正如他有儲存資料於瀏覽器內的技術,被用在Web tracking
Cache用於Web tracking的方法
1.Document Cache:直接把identifier存在cache裡,網站管理員在網頁中插入一段script。
伺服器隨機生成identifier放在response body>Cache-Control: max-age=31536000
(指定保留一年)>瀏覽器看到Cache-Control
再將cache存取>使用者再次造訪>瀏覽器直接回應cache中的資料
2.HTTP 301 Permanent Redirection Cache:將identifier儲存於redirection的資訊中,這往往更難發現。網站管理員在網頁中插入一段script。
伺服器隨機生成identifier>回傳301 Moved Permanently使用者再次造訪>瀏覽器把redirection的紀錄cache>JavaScript得到identifier>使用者再次造訪>瀏覽器看到請求後發現之前cache已經永久重新導向到http://example.com/tracking/>瀏覽器須直接向其發出請求>JavaScript讀到後得出identifier
301是永久重新導向,cache不會過期
3.ETag
如何知道cache是否過期>使用ETag(Entity Tag)辨識
伺服器回傳時夾帶一個ETag>存進cache並註明ETag>下次使用時請求夾帶的ETag If-None_Match: "123"
>伺服器檢視是否為最新版本>回傳304 Not Modified則可直接拿cache來使用/如果不是則回傳心得ETag更新cache
ETag的設定便是cookie的特徵,若把identifier放在ETag中,則可以達到Web tracking
伺服器自動生成新的identifierETag: "<identifier>"
>瀏覽器把資料ㄘㄨ資料存進cache並註明ETag是<identifier>
>使用者存取資料時,瀏覽器糗球中夾帶ETagIf-None-Match:"<identifier>"
ETag雖然沒有像cookie持久,但可以促使瀏覽器把cache清空
三種有關cache的Web tracking方法都可以cross-site tracking
防禦手段:
資料來源、選用書籍:<Web Tracking的資安攻擊與防禦策略>鐵人賽專用書